package com.cskaoyan.javse.oop3._2inner._6anonymous._1exercise;

/**
 * @description: 练习
 * @author: wuguidong@cskaoyan.onaliyun.com
 **/

/**
 * 编写程序,要求在控制台输出hello world~
 * 分析:
 *      Outer.method()是直接用类名点调用一个方法,method是属于Outer类的一个静态成员方法
 *      show是接口Inter的一个抽象方法
 *      method().show()链式调用的前提是前面方法的返回值是一个对象,说明method方法的返回值是接口Inter的实现类对象
 *
 */

public class Test {
    public static void main(String[] args) {
        Outer.method().show();
    }
}

interface Inter {
    void show();
}

class Outer {
    //该方法需要返回Inter的实现类对象
    //朴素的写法
   /* public static InterImpl method(){
        return new InterImpl();
    }*/

    public static Inter method() {
        //int a = 10;
        //高级的写法
        return new Inter() {
            @Override
            public void show() {
                System.out.println("Hello World~");
                //匿名内部类仍然是局部内部类,它访问的方法的局部变量仍然是一个常量
                //System.out.println(a);
                //a++;
            }
        };
    }
}

//朴素的写法
class InterImpl implements Inter {
    @Override
    public void show() {
        System.out.println("Hello World!~");
    }
}